package graphics.operations;

import graphics.Cerchio;
import graphics.Forma;
import graphics.Rettangolo;
import graphics.Triangolo;
import graphics.app.GraphicsData;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;

public class MuoviOperation extends Operation{

	int xStart,yStart;
	int xMove,yMove;
	
	
	public void mousePressed(MouseEvent event) {
		xStart=event.getX();
		yStart=event.getY();
	}
	
	
	public void mouseClicked(MouseEvent event) {
		//Do nothing
	}
	
	
	public void mouseDragged(MouseEvent event) {
		xMove=event.getX();
		yMove=event.getY();
		getData().aggiorna();
	}
	
	
	public void mouseEntered(MouseEvent event) {
		//Do nothing
	}
	
	
	public void mouseExited(MouseEvent event) {
		//Do nothing
	}
	
	
	public void mouseMoved(MouseEvent event) {
		//Do nothing
	}
	
	
	public void mouseReleased(MouseEvent event) {
		moveSelezione(getData(),xMove-xStart, yMove-yStart);
		xStart=0;
		yStart=0;
		xMove=0;
		yMove=0;
		getData().aggiorna();
	}
	
	
	public void drawOperationInfo(Graphics graphics) {
		graphics.setColor(Color.RED);
		graphics.drawLine(xStart, yStart, xMove, yMove);
		for (int i = 0; i < getData().getSelezioneFormeCount(); i++) {
			getData().getSelezioneForma(i).draw(graphics);
		}
		graphics.setColor(Color.BLACK);
	}
	
	public static void moveSelezione(GraphicsData data,int dx,int dy){

		for (int i = 0; i < data.getSelezioneFormeCount(); i++) {
			Forma forma=data.getSelezioneForma(i);
			
			if(forma instanceof Cerchio) {
				Cerchio cerchio=(Cerchio)forma;
				int xp=cerchio.getX();
				int yp=cerchio.getY();
				cerchio.setX(xp+dx);
				cerchio.setY(yp+dy);
			}
			
			if(forma instanceof Rettangolo) {
				Rettangolo rettangolo=(Rettangolo)forma;
				int xp=rettangolo.getX();
				int yp=rettangolo.getY();
				rettangolo.setX(xp+dx);
				rettangolo.setY(yp+dy);
			}
			
			if(forma instanceof Triangolo) {
				Triangolo triangolo=(Triangolo)forma;
				triangolo.setX1(triangolo.getX1()+dx);
				triangolo.setX2(triangolo.getX2()+dx);
				triangolo.setX3(triangolo.getX3()+dx);
				triangolo.setY1(triangolo.getY1()+dy);
				triangolo.setY2(triangolo.getY2()+dy);
				triangolo.setY3(triangolo.getY3()+dy);
			}
			
		}
	}
	
}
